<?php
 Session_Start () ;
 $_SESSION ["repertoire_config"] = "../../include" ; 
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../include/config.inc") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 $id_classe = var_courante ("id_classe", 0, 0) ;
 $nom_fichier = var_courante ("nom_fichier", 0, "") ;
 $millesime = millesime (0) ;
 $numero_rne = retrouve_rne ($millesime) ; If (StrToUpper (SubStr (PHP_OS, 0, 3) == "WIN")) { $separateur = "\\" ; } Else { $separateur = "/" ; }
 $numero_rne .= $separateur ;
 
 $param_theme = parametres_theme (themeparsession ($_SESSION ["code"])) ;
 $rep_themes = "../../images/themes/" ;
 Include ($rep_themes.$param_theme ["nom_repertoire"]."/".$param_theme ["fichier_config"]) ;
 If ($id_classe < 0)
  {
   // Procedure d'appel du calcul du PDF
   Echo "<html><head><title>Garennes.</title>" ;
   Echo "<meta http-equiv=\"refresh\" content=\"1;url='./trombinoscope_pdf.php?id_classe=".(-$id_classe)."&code=".$_SESSION ["code"]."&nom_fichier=trombinoscope.pdf'\">" ;
   Echo "</head>" ;
   Echo "<body background=\"".$rep_themes.$param_theme ["nom_repertoire"]."/".$theme [9][10]."\" onContextMenu=\"return false\">" ;
   Echo "<center><b>Cr&eacute;ation du PDF du trombinoscope pour impression.<br>Calcul en cours ... Veuillez patienter !</b><br>" ;
   Echo "<a href=\"./trombinoscope_pdf.php?id_classe=".(-$id_classe)."&code=".$_SESSION ["code"]."&nom_fichier=trombinoscope.pdf\" border==\"0\">" ;
   Echo "<img src=\"../../images/attente.gif\" border=\"1\"></a></center>" ;
   Echo "</body></html>" ;
  }
 Else
  {
   // Transmission serveur SQL
   SQL_transmission (4) ;
   //$ok = SQL_commande ("SET character_set_results=".$caracteres_document_PDF, $id_sql) ;
   
   Include ("../../include/phppdflib.class.php") ;
   
   // Parametres bulletin PDF
   $bulletin_pdf_format = 0 ; // 0 : portrait ; 1 : paysage
   $c_x = 28.346 ;
   $c_y = 28.346 ;
   
   // !!!! MODE PAYSAGE A FAIRE -> UTILISER UNIQUEMENT LE MODE PORTRAIT
   If ($bulletin_pdf_format)
    {
     $bulletin_pdf_hauteur = 595 ;
     $bulletin_pdf_largeur = 842 ;
     $bulletin_pdf_rotation = 90 ;
     $bulletin_pdf_largeur_photo = 39 ; // 55
     $bulletin_pdf_hauteur_photo = 55 ; // 78
    }
   Else
    {
     $bulletin_pdf_hauteur = 842 ; // 595
     $bulletin_pdf_largeur = 595 ; // 842
     $bulletin_pdf_rotation = 0 ;
     $bulletin_pdf_largeur_photo = 52 ; // 52
     $bulletin_pdf_hauteur_photo = 75 ; // 75
    }
   $bulletin_pdf_largeur_entete = $bulletin_pdf_largeur ;
   $bulletin_pdf_hauteur_entete = 50 ;
   $bulletin_pdf_marge_haut = 10 ;
   $bulletin_pdf_marge_bas = 20 ;
   $bulletin_pdf_marge_gauche = 10 ;
   $bulletin_pdf_marge_droite = 10 ;
   If ($bulletin_pdf_format) { $bulletin_pdf_nombre_photo_ligne = 8 ; } Else { $bulletin_pdf_nombre_photo_ligne = 5 ; }
   $bulletin_pdf_nombre_max_photo = 40 ;
   $bulletin_pdf_nombre_max_lignes = $bulletin_pdf_nombre_max_photo/$bulletin_pdf_nombre_photo_ligne ;
   $bulletin_pdf_largeur_emplacement = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite)/$bulletin_pdf_nombre_photo_ligne ; // 105.25
   $bulletin_pdf_hauteur_emplacement = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas)/$bulletin_pdf_nombre_max_lignes ; // = 495/6=99 
   $bulletin_pdf_espacement_haut = 1 ;
   $bulletin_pdf_espacement_milieu = 1 ;
   $bulletin_pdf_espacement_bas = 1 ;
   $bulletin_pdf_espacement_gauche = 2 ;
   $bulletin_pdf_espacement_droite = 2 ;
   
   // Taille photo
   //                                    20% - 33% - 100%
   $photo_bulletin_pdf_hauteur = 78 ; // 53  - 90  - 265
   $photo_bulletin_pdf_largeur = 55 ; // 38  - 65  - 189
   $nbr_photo_largeur_bulletin_pdf = 8 ;
   
   // Variables
   $nom_classe = nom_classe_long_parid ($id_classe) ;
   $rens_classe = SQL_commande ("SELECT * FROM classes WHERE id_classe='".$id_classe."' LIMIT 1", $id_sql) ;
   $rs_cl = SQL_tableau_associatif ($rens_classe, "") ;
   
   // Chercher les fiches eleves de la classe $id_classe
   $resultat = SQL_commande ("SELECT * FROM eleves WHERE classe='".$id_classe."' AND exterieur='0' AND millesime='".$millesime."' ORDER BY nom,prenoms,login", $id_sql) ;
   $nombre = SQL_nbr_lignes ($resultat) ;
  
   // Determine le nombre de photos par ligne
   If ($bulletin_pdf_format)
    {
     If ($nombre < 9) { $bulletin_pdf_nombre_photo_ligne = 3 ; }
     ElseIf ($nombre < 13) { $bulletin_pdf_nombre_photo_ligne = 4 ; }
     ElseIf ($nombre < 21) { $bulletin_pdf_nombre_photo_ligne = 5 ; }
     ElseIf ($nombre < 31) { $bulletin_pdf_nombre_photo_ligne = 6 ; }
     Else { $bulletin_pdf_nombre_photo_ligne = 8 ; }
    }
   Else
    {
     If ($nombre < 9) { $bulletin_pdf_nombre_photo_ligne = 2 ; }
     ElseIf ($nombre < 13) { $bulletin_pdf_nombre_photo_ligne = 3 ; }
     ElseIf ($nombre < 21) { $bulletin_pdf_nombre_photo_ligne = 4 ; }
     Else { $bulletin_pdf_nombre_photo_ligne = 5 ; }
    }
   
   // Calcul le nombre de lignes et le reste sur la derniere 
   $nbr_lg = Floor ($nombre/$bulletin_pdf_nombre_photo_ligne) ;
   $nbr_reste = $nombre%$bulletin_pdf_nombre_photo_ligne ;
   
   // Calcul le nombre totale de ligne meme non remplie (pour la derniere)
   $nbr_ligne_total = $nbr_lg ;
   If ($nbr_reste > 0) { $nbr_ligne_total++ ; }
   
   // Calcul de la taille du rectangle de toutes les photos
   $taille_x = $bulletin_pdf_largeur_emplacement*$bulletin_pdf_nombre_photo_ligne ;
   $taille_y = $bulletin_pdf_hauteur_emplacement*$nbr_ligne_total ;
   $echelle_x = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite)/$taille_x ;
   $echelle_y = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas)/$taille_y ;
   If ($echelle_x < $echelle_y) { $echelle = $echelle_y ; } Else { $echelle = $echelle_x ; }
   If ($echelle_y > 3) { $echelle_y = 3 ; }
   If ($echelle_x > 3) { $echelle_x = 3 ; }
   If ($echelle > 2) { $echelle = 2 ; }
   
   $bulletin_pdf_largeur_photo *= $echelle ;
   $bulletin_pdf_hauteur_photo *= $echelle ;
   $bulletin_pdf_largeur_emplacement *= $echelle_x ;
   $bulletin_pdf_hauteur_emplacement *= $echelle_y ;
   $bulletin_pdf_espacement_image = ($bulletin_pdf_largeur_emplacement-$bulletin_pdf_largeur_photo)/2 ;
   $bulletin_pdf_marge_interieure_hauteur = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas-$bulletin_pdf_hauteur_emplacement*$nbr_ligne_total)/2 ;
   $bulletin_pdf_marge_interieure_largeur = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite-$bulletin_pdf_largeur_emplacement*$bulletin_pdf_nombre_photo_ligne)/2 ;
   
   // Cherche le nom de la classe
   $nom_classe = SQL_commande ("SELECT * FROM classes WHERE id_classe='".$id_classe."' LIMIT 1", $id_sql) ;
   $cl = SQL_tableau_associatif ($nom_classe, "") ;
   
   // Recherche nom prof principal
   $resultat_prof_p = SQL_commande ("SELECT u.nom,u.prenom,u.civilite,u.droits FROM utilisateurs u,classes c WHERE c.id_classe='".$id_classe."' AND c.numen_prof_princ=u.numen AND c.id_prof_princ=u.id_utilisateur LIMIT 1", $id_sql) ;
   
   // Gestion
   //$gestion = SQL_commande ("SELECT * FROM gestion", $id_sql) ;
   //$ges = SQL_tableau_associatif ($gestion, "") ;
  
   $pdf = New pdffile ;
   $page = $pdf->New_Page (($bulletin_pdf_largeur/$c_x)."x".($bulletin_pdf_hauteur/$c_y)."cm") ;
   
   // Entete
   $param ["height"] = "23" ;
   $param ["width"] = 1 ;
   $param ["font"] = "Helvetica" ;
   $param ["red"] = 0 ;
   $param ["green"] = 0 ;
   $param ["blue"] = 0 ;
   $pdf->Draw_Text ($bulletin_pdf_marge_gauche+10,
                    $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-25,
  		    "Classe : ".$cl ["nom"]."(".$cl ["nom_bref"].")",
  		    $page, $param) ;
   $annee = $millesime."-".($millesime+1) ;
   $pdf->Draw_Text ($bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$pdf->StrLen ($annee, $param),
                    $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-25,
                    $annee, $page, $param) ;
   
   If (SQL_nbr_lignes ($resultat_prof_p))
    {
     $prof_princ = SQL_tableau_associatif ($resultat_prof_p, "") ;
     If ($prof_princ ["droits"] == $droit_prof)
      {
       $param ["height"] = "10" ;
       /*
       If (StrPos (" ", $prof_princ ["prenom"]))
        {
         $prenom = SubStr ($prof_princ ["prenom"], 0, StrPos (" ", $prof_princ ["prenom"])) ;
        }
       Else
        { $prenom = $prof_princ ["prenom"] ; }
       $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubSTr ($prenom, 1, StrLen ($prenom)-1)) ;
       */
       If (StrPos ($prof_princ ["prenom"], "-"))
        {
         $position = StrPos ($prof_princ ["prenom"], "-") ;
         $prenom  = StrToUpper (SubStr ($prof_princ ["prenom"], 0, 1)) ;
         $prenom .= StrToLower (SubStr ($prof_princ ["prenom"], 1, $position)) ;
         //$prenom .= "-" ;
         $prenom .= StrToUpper (SubStr ($prof_princ ["prenom"], $position+1, 1)) ;
         $prenom .= StrToLower (SubStr ($prof_princ ["prenom"], $position+2, StrLen ($prof_princ ["prenom"])-$position-1)) ;
        }
       ElseIf (StrPos ($prof_princ ["prenom"], " "))
        {
         $prenom = SubStr ($prof_princ ["prenom"], 0, StrPos ($prof_princ ["prenom"], " ")) ;
         $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubStr ($prenom, 1, StrLen ($prenom)-1)) ;
        }
       Else
        {
         //$prenom = $prof_princ ["prenom"] ;
         $prenom = StrToUpper (SubStr ($prof_princ ["prenom"], 0, 1)).StrToLower (SubStr ($prof_princ ["prenom"], 1, StrLen ($prof_princ ["prenom"])-1)) ;
        }
       Switch ($prof_princ ["civilite"])
        {
         Case  0 : $civilite = "Mme" ; Break ;
         Case  1 : $civilite = "Mle" ; Break ;
         Case  2 : $civilite = "M." ; Break ;
         Default : $civilite = "M." ; Break ;
        }
       $pdf->Draw_Text ($bulletin_pdf_marge_gauche+10,
                        $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-40,
                        "Enseignant principal : ".$civilite." ".$prenom." ".StrToUpper ($prof_princ ["nom"]),
  		        $page, $param) ;
      }
    }
   
   // Position depart
   $y = $bulletin_pdf_hauteur_emplacement*($nbr_ligne_total-1)+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ; 
   For ($i = 0 ; $i < $nbr_lg ; $i++)
    {
     For ($j = 0 ; $j < $bulletin_pdf_nombre_photo_ligne ; $j++)
      {
       $x = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x ;
       $eleve = SQL_tableau_associatif ($resultat, "") ;
       If (($eleve ["photo"]) And (File_Exists ($repertoire_racine.$separateur."images".$separateur."eleves".$separateur.$numero_rne.$separateur.$eleve ["photo"])))
        { $fiche_photo = $repertoire_racine.$separateur."images".$separateur."eleves".$separateur.$numero_rne.$separateur.$eleve ["photo"] ; }
       ElseIf (File_Exists ($repertoire_racine.$separateur."images".$separateur."eleves".$separateur."anonyme.png"))
        { $fiche_photo = $repertoire_racine.$separateur."images".$separateur."eleves".$separateur."anonyme.png" ; }
       Else
        { $fiche_photo = "" ; }
       If ($fiche_photo)
        {
         $donnees = image_jpg ($fiche_photo) ;
         $image = $pdf->jfif_embed ($donnees) ;
         $taille = $pdf->Get_Image_Size ($image) ;
         If ($taille ["height"]) { $echelle = $bulletin_pdf_hauteur_photo/$taille ["height"] ; }
         Else { $echelle = 1 ; }
         $pdf->Image_Place ($image, $y+($bulletin_pdf_espacement_bas+$bulletin_pdf_espacement_milieu+18)*$echelle_y,
                            $x+$bulletin_pdf_espacement_image, $page, $echelle, 0) ;
        }
  
       // Nom
       $param ["height"] = "9" ;
       $param ["width"] = 1 ;
       $param ["align"] = "center" ;
       $param ["font"] = "Helvetica-Bold" ;
       $param ["red"] = 0 ;
       $param ["green"] = 0 ;
       $param ["blue"] = 0 ;
       If (StrPos ($eleve ["prenoms"], " ")) { $prenom = SubStr ($eleve ["prenoms"], 0, StrPos ($eleve ["prenoms"], " ")) ; }
       Else { $prenom = $eleve ["prenoms"] ; }
       $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubStr ($prenom, 1, StrLen ($prenom)-1)) ;
       $pdf->Draw_Paragraph ($y+($bulletin_pdf_espacement_bas+20)*$echelle_y-1,
                             $x+$bulletin_pdf_espacement_gauche*$echelle_x,
  			     $y+$bulletin_pdf_espacement_bas,
  			     $x+$bulletin_pdf_largeur_emplacement-$bulletin_pdf_espacement_droite*$echelle_x,
  			     $eleve ["nom"]." ".$prenom, $page, $param) ;
      }
     $y = $y - $bulletin_pdf_hauteur_emplacement ;
    }
   If ($nbr_reste > 0)
    {
     For ($j = 0 ; $j < $nbr_reste ; $j++)
      {
       $x = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x ;
       $eleve = SQL_tableau_associatif ($resultat, "") ;
       If (($eleve ["photo"]) And (File_Exists ($repertoire_racine.$separateur."images".$separateur."eleves".$separateur.$numero_rne.$separateur.$eleve ["photo"])))
        { $fiche_photo = $repertoire_racine.$separateur."images".$separateur."eleves".$separateur.$numero_rne.$separateur.$eleve ["photo"] ; }
       ElseIf (File_Exists ($repertoire_racine.$separateur."images".$separateur."eleves".$separateur."anonyme.png"))
        { $fiche_photo = $repertoire_racine.$separateur."images".$separateur."eleves".$separateur."anonyme.png" ; }
       Else
        { $fiche_photo = "" ; }
       If ($fiche_photo)
        {
         $photo = FOpen ($fiche_photo, "r") ;
         $donnees = FRead ($photo, FileSize ($fiche_photo)) ;
         FClose ($photo) ;
         $image = $pdf->jfif_embed ($donnees) ;
         $taille = $pdf->Get_Image_Size ($image) ;
         If ($taille ["height"]) { $echelle = $bulletin_pdf_hauteur_photo/$taille ["height"] ; }
         Else { $echelle = 1 ; }
         //$ech_y = $bulletin_pdf_largeur_photo/$taille ["width"] ;
         $pdf->Image_Place ($image, $y+$bulletin_pdf_espacement_bas+$bulletin_pdf_espacement_milieu+18*$echelle_y,
                            $x+$bulletin_pdf_espacement_image, $page, $echelle, 0) ;
        }
  
       // Nom
       $param ["height"] = "10" ;
       $param ["width"] = 1 ;
       $param ["font"] = "Helvetica-Bold" ;
       $param ["red"] = 0 ;
       $param ["green"] = 0 ;
       $param ["blue"] = 0 ;
       If (StrPos ($eleve ["prenoms"], " ")) { $prenom = SubStr ($eleve ["prenoms"], 0, StrPos ($eleve ["prenoms"], " ")) ; }
       Else { $prenom = $eleve ["prenoms"] ; }
       $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubStr ($prenom, 1, StrLen ($prenom)-1)) ;
       $pdf->Draw_Paragraph ($y+($bulletin_pdf_espacement_bas+20)*$echelle_y-1,
                             $x+$bulletin_pdf_espacement_gauche*$echelle_x,
  			     $y+$bulletin_pdf_espacement_bas,
  			     $x+$bulletin_pdf_largeur_emplacement-$bulletin_pdf_espacement_droite*$echelle_x,
  			     $eleve ["nom"]." ".$prenom, $page, $param) ;
      }
    }
  
   $param ["width"] = 1 ;
   $param ["red"] = 0 ;
   $param ["green"] = 0 ;
   $param ["blue"] = 0 ;
   $xx [0] = $bulletin_pdf_marge_gauche*$echelle_x ;
   $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite ;
   $yy [0] = $yy [1] = $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-50-$bulletin_pdf_marge_interieure_hauteur ;
   $pdf->Draw_Line ($xx, $yy, $page, $param) ;
   $y = $bulletin_pdf_hauteur_emplacement*($nbr_ligne_total-1)+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
   For ($i = 0 ; $i < $nbr_ligne_total ; $i++)
    {
     $xx [0] = $bulletin_pdf_marge_gauche*$echelle_x+$bulletin_pdf_marge_interieure_largeur ;
     $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$bulletin_pdf_marge_interieure_largeur ;
     $yy [0] = $yy [1] = $y ;
     $pdf->Draw_Line ($xx, $yy, $page, $param) ;
     $y = $y - $bulletin_pdf_hauteur_emplacement ;
    }
   $y_init = $bulletin_pdf_hauteur_emplacement*$nbr_ligne_total+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
   $y_final = $y+$bulletin_pdf_hauteur_emplacement ;
   For ($j = 0 ; $j < $bulletin_pdf_nombre_photo_ligne ; $j++)
    {
     $xx [0] = $xx [1] = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x+$bulletin_pdf_marge_interieure_largeur ;
     $yy [0] = $y_init ;
     $yy [1] = $y_final ;
     $pdf->Draw_Line ($xx, $yy, $page, $param) ;
    }
   $xx [0] = $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$bulletin_pdf_marge_interieure_largeur ;
   $yy [0] = $y_init ;
   $yy [1] = $y_final ;
   $pdf->Draw_Line ($xx, $yy, $page, $param) ;
   
   // Affichage du copyright
   If ($bulletin_pdf_format == 0) { $l = $bulletin_pdf_largeur ; } Else { $l = $bulletin_pdf_hauteur ; }
   // Couleurs
   $param ["width"] = 1 ;
   $param ["red"] = 0 ;
   $param ["green"] = 0 ;
   $param ["blue"] = 0 ;
     
   // Texte a droite
   $texte = Chr (169)." Garennes ".$version_garennes." - GNU GPL - 2000-".Date ("Y") ;
   $param ["font"] = "Helvetica" ;
   $param ["height"] = "6" ;
   $pdf->Draw_Text ($l*$echelle_x-$bulletin_pdf_marge_droite-$pdf->StrLen ($texte, $param)-1.5*$echelle_x,
                    $y_final-$param ["height"], $texte, $page, $param) ;
  
   /*
   Header ("Content-Disposition: inline; filename=trombinoscope_".$cl ["nom"].".pdf") ;
   Header ("Content-Type: application/pdf") ;
   Echo $pdf->Generate () ;
   */
   
   $fiche = FOpen ("../../tmp/f".Session_Id().".pdf", "w") ;
   FPuts ($fiche, $pdf->Generate (0)) ;
   FClose ($fiche) ;
   Header ("Location: ../../tmp/f".Session_Id().".pdf") ;
  }
?>